/*
 * ------------------------------------------------------------------------
 *  FECHA      HORA     NOMBRE     COMENTARIO     			     
 * ------------------------------------------------------------------------
 *  09/05/08   20:00    DAVID      Creació de la interface            
 *  17/05/08   16:55    ALEX       Documentació pendent                   
 */

package net.ieslaferreria.infoCiutat;

import java.util.Date;
import org.garret.perst.IPersistent;

/** 
 * Interficie que representa un conjunt de punts i arestes determinants.
 * 
 * @author David Maqueda, Javi Xaranda, Alex Fernández, Sergio Soria.
 */
public interface Xarxa extends IPersistent{
    
   /** 
    * Retorna el codi de la Xarxa.
    * 
    * @return int
    */
    public int getCodi();
    
    /**
     * Estableix el valor de l'atribut codi.
     * 
     * @param codi
     */
    public void setCodi(int codi);
    
    /** 
     * Retorna el nom de la xarxa.
     * 
     * @return String
     */
    public String getNom();
    
    /**
     * Estableix el valor de l'atribut nom.
     * 
     * @param nom
     */
    public void setNom(String nom);
    
    /** 
     * Retorna la velocitat a la que va la xarxa.
     * 
     * @return int
     */
    public int getVelocitat();
    
    /**
     * Estableix el valor de l'atribut velocitat.
     * 
     * @param velocitat
     */
    public void setVelocitat(int velocitat);
    
    /** 
     * Retorna el temps que trigarà en pasar un trasport i un altre 
     * de la mateixa xarxa.
     * 
     * @return int
     */ 
    public int getTemps(int diaSetmana);
    
    /**
     * Estableix el valor de l'atribut tempsEspera.
     * 
     * @param temps
     */
    public void setTempsSetmana(int temps);
    
    /**
     * Estableix el valor de l'atribut tempsEsperaCapSetmana.
     * @param temps
     */
    public void setTempsCapSetmana(int tempsCapSetmana);

    /** 
     * Retorna el preu de la xarxa.
     * 
     * @return int
     */
    public int getPreu();  
    
    /**
     * Estableix el valor de l'atribut preu.
     * 
     * @param preu
     */
    public void setPreu(int preu);
    
    /** 
     * Retorna la prioritat de la xarxa. de 0 a 5.
     * 
     * @return int
     */
    public int getPrioritat();
    
    /**
     * Estableix el valor de l'atribut prioritat.
     * 
     * @param prioritat
     */
    public void setPrioritat(int prioritat);
    
    /** 
     * Diu si la hora que li pasem per parametre es troba en 
     * la franja de servei.
     * 
     * @param hora
     * @return Boolean
     */
    public boolean esEnHora(int min);
    
    /** 
     * Retorna Cert o Fals depenent si la xarxa utilitza subterrani.
     * 
     * @return Boolean
     */
    public boolean esSubterrani();
    
    /**
     * Estableix el valor de l'atribut subterrani.
     * 
     * @param subterrani
     */
    public void setSubterrani(boolean subterrani);
    
    /** 
     * Retorna Cert o Fals depenent si la xarxa implica esforç físic.
     * 
     * @return Boolean
     */
    public boolean hiHaEsforçFisic();
    
    /**
     * Estableix el valor de l'atribut esforcFisic.
     * 
     * @param esforcFisic
     */
    public void setEsforcFisic(boolean esforcFisic);
    
    /**
     * Retorna si la data introduida cau en cap de setmana o no.
     * 
     * @param data
     * @return boolean
     */
    public boolean esCapSetmana(Date data);
    
    /**
     * Retorna l'hora en la que comença el servei de la xarxa depenent del dia
     * de la setmana que li passem expressat en minuts desde les 12 de la nit.
     * 
     * @param diaSetmana
     * @return int
     */
    public int getHoraInici(int diaSetmana);
    
    /**
     * Estableix el valor de l'atribut horaInici.
     * 
     * @param horaInici
     */
    public void setHoraInici(int horaInici);
    
    /**
     * Retorna l'hora en la que acaba el servei de la xarxa depenent del dia
     * de la setmana que li passem expressat en minuts desde les 12 de la nit.
     * 
     * @param diaSetmana
     * @return int
     */
    public int getHoraFi(int diaSetmana);
    
    /**
     * Estableix el valor de l'atribut horaFi.
     * 
     * @param horaFi
     */
    public void setHoraFi(int horaFi);
    
    /**
     * Retorna el codi de la linia de la xarxa que tractem.
     * 
     * @return int
     */
    public int getCodiLinia();
    
    /**
     * Estableix el valor de l'atribut codiLinia.
     * 
     * @param codiLinia
     */
    public void setCodiLinia(int codiLinia);
    
    /**
     * Retorna el nom de la linia que tractem.
     * 
     * @return String
     */
    public String getNomLinia();
    
    /**
     * Estableix el valor de l'atribut linia.
     * 
     * @param linia
     */
    public void setNomLinia(String linia);
    
    public void setEsforcFisic(String bol);
    
    public void setSubterrani(String bol);

}
